package Learn;

import java.util.ArrayList;

public class GenericsDemo2 {
    //泛型不具备继承性
    //但是数据具备继承性   （如果列表Ye里存的有Fu的变量 也可以传递）

    public static void main(String[] args) {
        ArrayList<Ye> ye=new ArrayList<>();
        ArrayList<Fu> fu=new ArrayList<>();
        ArrayList<Zi> zi=new ArrayList<>();

        method(ye);
        //泛型不具备继承性 所以 方法中的泛型的子类不能被传递

//        method(fu);
//        method(zi);

        //可以接受任意类型 但是不能限定只接受哪几种类型
        method1(fu);
        method1(zi);


        //通配符
        //? 表示接受不确定的类型
        //可以进行对类型的限定
        //比如 ? extends E: 表示可以传递E及E的所有子类
        //     ? super  E: 表示可以传递E 及E的所有父类


//        method1(Student);   //报错

    }


    public static void method(ArrayList<Ye> a){

    }
    public static void method1(ArrayList<? extends Ye> a){

    }
}
class Ye{}
class Fu extends Ye{}
class Zi extends Fu{}
class Student{}